CLDSRV-968: Expire idle keep-alive sockets in the functional test client - #6247
CLDSRV-968: Expire idle keep-alive sockets in the functional test client#6247tcarmet wants to merge 1 commit into
Conversation
Hello tcarmet,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Incorrect fix versionThe
Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:
Please check the |
Request integration branchesWaiting for integration branch creation to be requested by the user. To request integration branches, please comment on this pull request with the following command: Alternatively, the |
|
/create_integration_branches |
Integration data createdI have created the integration data for the additional destination branches.
The following branches will NOT be impacted:
You can set option The following options are set: create_integration_branches |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
The following options are set: create_integration_branches |
Incorrect fix versionThe
Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:
Please check the The following options are set: create_integration_branches |
The SDK agents in the aws-node-sdk test client enable keepAlive without an idle
timeout, so pooled sockets are never expired client-side. Node's HTTP server
closes idle keep-alive connections after 5s and advertises `Keep-Alive:
timeout=5`, but the agent only honours that hint when it already has a non-zero
timeout of its own. Without one, a burst of requests issued after an idle period
can be written to connections the server has already closed, failing with
ECONNRESET ("socket hang up").
Set a 4s agent idle timeout so the client retires sockets before the server
does. This only destroys sockets sitting in the free pool; in-flight requests
stay governed by requestTimeout.
0065a20 to
7346130
Compare
|
/reset |
Reset completeI have successfully deleted this pull request's integration branches. The following options are set: create_integration_branches |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
The following options are set: create_integration_branches |
|
/approve |
Build failedThe build for commit did not succeed in branch w/9.4/bugfix/CLDSRV-968-test-client-idle-socket-timeout The following options are set: approve, create_integration_branches |
Build failedThe build for commit did not succeed in branch bugfix/CLDSRV-968-test-client-idle-socket-timeout The following options are set: approve, create_integration_branches |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## development/9.3 #6247 +/- ##
================================================
Coverage 85.08% 85.08%
================================================
Files 206 206
Lines 13422 13422
================================================
Hits 11420 11420
Misses 2002 2002
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
Build failedThe build for commit did not succeed in branch w/9.4/bugfix/CLDSRV-968-test-client-idle-socket-timeout The following options are set: approve, create_integration_branches |
Build failedThe build for commit did not succeed in branch bugfix/CLDSRV-968-test-client-idle-socket-timeout The following options are set: approve, create_integration_branches |
The functional test client keeps pooled keep-alive connections indefinitely, so after an idle gap it can send a request over a connection the server has already closed and fail with a spurious connection reset. Because the client also runs with retries disabled, one reset is enough to fail a hook and take a whole group of tests down with it, which surfaces as intermittent CI red on slower full-deployment environments where such idle gaps actually occur.
This makes the client expire its own idle connections before the server does, so the reuse race cannot arise.